<?php

/**
 * Classe para traduçao de front end usando Resource Bundle
 * @author Maiser J. Alves (maiseralves@gmail.com)
 */
class Translator {
	//Resource Bundle Object
	private $rb;

	/**
	 * Construtor da classe
	 * @param $lang 'locale' forma bb_BB
	 * @param $folderlocale Caminho para os arquivos de traduçao
	 *
	 */
	/*function Translator($lang="root", $folderlocale="./locale") {
		$this -> rb = new ResourceBundle($lang, $folderlocale);
	}*/
	function Translator($lang="pt_BR", $folderlocale="./locale") {
	/*
		//Setando a linguagem para $lang
		putenv('LC_ALL='.$lang);
		setlocale(LC_ALL, $lang);
		
		//Especificando a localização das tabelas de traduções
		bindtextdomain("myPHPApp", $folderlocale);
		
		// Escolhendo dominio
		textdomain("myPHPApp");
	
		// Traduções serão procuradas em: $folderlocale/$lang/LC_MESSAGES/myPHPApp.mo
	 */ 
	}

	/**
	 * Traduz uma entrada dada por $key
	 * @param $key:string Chave a ser traduzida
	 */
	/*public function get($key) {
		$t = $this -> rb -> get($key);
		if($t){
			echo $t;
		}else{
			echo $key;
		}
	}*/
	public function get($key) {
			//echo gettext("$key");
			echo $key;
	}

	/**
	 * Traduz uma entrada dada por $key
	 * @param $key:string Chave a ser traduzida
	 * @return O parametro traduzido
	 */
	/*public function getr($key) {
		$t = $this -> rb -> get($key);
		if($t){
			return $t;
		}else{
			return $key;
		}
		
	}*/
	public function getr($key) {
			//return gettext("$key");
			return $key;	
	}
	
	/**
	 *
	 * ICU - International Components for Unicode (ICU) libraries
	 * http://www.icu-project.org/
	 *
	 * ICU4J - ICU for JAVA
	 * ICU4C - ICU for C/C++
	 *
	 * The Internationalization Extension - Intl
	 * API is Procedural and Object Oriented
	 *
	 * Intl common functions:
	 *  intl_get_error_code() — returns the ICU error code from the last operation
	 *  intl_get_error_message() — returns a textual description of the last error
	 *  intl_is_failure(int $err) — checks if a given error code is a failure code
	 *  intl_error_name(int $err) — returns the ICU internal name for a given error code
	 *
	 * Estrutura de uma Resource
	 * root:table {
	 *       usage:string { "Usage: genrb [Options] files" }
	 *       version:int { 122 }
	 *       errorcodes:array {
	 *           :string { "Invalid argument" }
	 *           :string { "File not found" }
	 *        }
	 *   }
	 *
	 * arquivo root é o default caso nao haja tradução
	 * genrb -d folderlocale root.txt pt_BR.txt en_US.txt
	 */

	private function t($rb) {

		foreach($rb as $k => $v) {
			if(is_object($v)) {
				//var_dump($k);
				print_r($v);
				var_dump($k);
				t($v);
			} else {
				//if($v == $translate) return $v;
				//echo "$k => $v<br/>";
				var_dump($k . " " . $v);
			}
		}
	}

}
?>